// 实现在字符串的内部增加字符串。

// void insert(char * s1,char * s2, int n);
// 将s2指向的字符串的拷贝，添加到s1第n个字符的位置，原位置的字符后移。n=0时，s2增加到s1的首部；
// n=s1的字符串长度时，s2增加到s1的末尾。

// 注意：使用空格字符来表示字符串的结束。
// 例如source指向位置，依次保存了字符'a'，字符'b'，字符空格' '，字符'c'，则source指向的字符串为"ab"。

// 保存为functions.cpp。
// 遇到异常情况，输出"error"；否则不要随意输出，会视为错误。

#include <stdio.h>

void insert(char * s1,char * s2, int n)
{
    int c1 = 0, c2 = 0, i = 0;
    if(s1 == NULL || s2 == NULL || n < 0)
    {
        printf("error");
        return;
    }
    while(s2[c2] != ' ' && s2[c2] != '\0')
        c2++;
    while(s1[c1] != ' ' && s1[c1] != '\0')
        c1++;
    if(n > c1)
    {
        printf("error");
        return;
    }
    for(i = 0; i < c1 - n; i++)
    {
        s1[c1 - i + c2 - 1] = s1[c1 - i - 1];
    }
    for(i = 0; i < c2; i++)
    {
        s1[n + i] = s2[i];
    }
    s1[c1 + c2] = ' ';
    s1[c1 + c2 + 1] = '\0';
}

// 提交记录：
// 35
// 3_insert
// C++
// 2024-07-03 20:22:37.0
// score
// 100

// Written By Sibei